package com.whz.parameterized;

import java.util.List;

/**
 * @Author: sinosoft
 * @Description: swap方法
 * swap1()使用无限制的类型参数
 * swap2()使用无限制的通配符
 * 在公共API中 第二种更好一些
 * 如果类型参数只在方法声明中出现一次 就可以用通配符取代它
 * 如果是无限制的类型参数 就用无限制的通配符取代它 如果是有限制的类型参数 就用有限制的通配符取代它
 * @Date: Create in 21:14 2021/5/11
 * @Modified By:
 */
public class SwapUtils {
    public static <E> void swap1(List<E> list, int i, int j) {

    }
    public static void swap2(List<?> list, int i, int j) {
        swapHelper(list, i, j);
    }
    /*编写一个私有的辅助方法来捕捉通配符类型*/
    private static <E> void swapHelper(List<E> list, int i, int j) {
        list.set(i, list.set(j, list.get(i)));
    }
}
